package com.rsa;

import com.rsa.common.RasCommon;
import com.rsa.decrypt.DecryptTools;
import com.rsa.decrypt.sign.ValiditySign;
import com.rsa.encrypt.EncryptTools;
import com.rsa.encrypt.sign.EncryptSign;
import com.rsa.entity.Keys;
import com.rsa.generate.GeneratorKey;

/**
 * @author lf
 * @Description: 加密服务测试
 * @date 2020/7/30 12:51
 */
public class RsaMain {

    public static void main(String[] args) {
        try {
            /**生成密钥对*/
            Keys keys = GeneratorKey.genKeyPair();
            System.out.println("私钥:" + keys.getPriKey());
            System.out.println("公钥:" + keys.getPubKey());

            /**加密方关注方法开始  start */

            String data = "我是待加密的数据";
            /**使用服务提供商给予的公钥,对数据进行RSA加密*/
            String encryptData = EncryptTools.dataEncrypt(data, RasCommon.PROVIDER_PUBLIC);
            System.out.println("加密后内容:" + encryptData);

            /**使用自身私钥实现数据签名加密,RSA签名*/
            String sign = EncryptSign.sign(data, RasCommon.CALLER_PRIVATE);

            /**加密方关注方法开始  end */


            /**解密方关注方法开始  start */
            /**服务提供商使用自身私钥对数据进行解密,RSA解密*/
            String decryptData = DecryptTools.dataDecrypt(encryptData,RasCommon.PROVIDER_PRIVATE);
            System.out.println("解密后内容:" + decryptData);


            /** 服务提供商根据服务调用商给予的公钥对数据进行验签，RSA验签 */
            boolean result = ValiditySign.dataVerify(data, RasCommon.CALLER_PUBLIC, sign);
            System.out.print("验签结果:" + result);

            /**解密方关注方法开始  end */

        } catch (Exception e) {
            e.printStackTrace();
            System.out.print("加解密异常");
        }
    }
}
